/*
	Slimbox v2.03 - The ultimate lightweight Lightbox clone for jQuery
	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
 */
(function(w) {
	var E = w(window), u, g, F = -1, o, x, D, v, y, L, s, n = !window.XMLHttpRequest, e = window.opera
			&& (document.compatMode == "CSS1Compat")
			&& (w.browser.version >= 9.3), m = document.documentElement, l = {}, t = new Image(), J = new Image(), H, a, h, q, I, d, G, c, A, K;
	w(function() {
		w("body").append(
				w(
						[ H = w('<div id="lbOverlay" />')[0],
								a = w('<div id="lbCenter" />')[0],
								G = w('<div id="lbBottomContainer" />')[0] ])
						.css("display", "none"));
		h = w('<div id="lbImage" />').appendTo(a).append(
				q = w('<div style="position: relative;" />').append(
						[
								I = w('<a id="lbPrevLink" href="#" />')
										.click(B)[0],
								d = w('<a id="lbNextLink" href="#" />')
										.click(f)[0] ])[0])[0];
		c = w('<div id="lbBottom" />').appendTo(G).append(
				[ w('<a id="lbCloseLink" href="#" />').add(H).click(C)[0],
						A = w('<div id="lbCaption" />')[0],
						K = w('<div id="lbNumber" />')[0],
						w('<div style="clear: both;" />')[0] ])[0]
	});
	w.slimbox = function(O, N, M) {
		u = w.extend({
			loop : false,
			overlayOpacity : 0.8,
			overlayFadeDuration : 400,
			resizeDuration : 400,
			resizeEasing : "swing",
			initialWidth : 250,
			initialHeight : 250,
			imageFadeDuration : 400,
			captionAnimationDuration : 400,
			counterText : "Image {x} of {y}",
			closeKeys : [ 27, 88, 67 ],
			previousKeys : [ 37, 80 ],
			nextKeys : [ 39, 78 ]
		}, M);
		if (typeof O == "string") {
			O = [ [ O, N ] ];
			N = 0
		}
		y = E.scrollTop() + ((e ? m.clientHeight : E.height()) / 2);
		L = u.initialWidth;
		s = u.initialHeight;
		w(a).css({
			top : Math.max(0, y - (s / 2)),
			width : L,
			height : s,
			marginLeft : -L / 2
		}).show();
		v = n || (H.currentStyle && (H.currentStyle.position != "fixed"));
		if (v) {
			H.style.position = "absolute"
		}
		w(H).css("opacity", u.overlayOpacity).fadeIn(u.overlayFadeDuration);
		z();
		k(1);
		g = O;
		u.loop = u.loop && (g.length > 1);
		return b(N)
	};
	w.fn.slimbox = function(M, P, O) {
		P = P || function(Q) {
			return [ Q.href, Q.title ]
		};
		O = O || function() {
			return true
		};
		var N = this;
		return N.unbind("click").click(function() {
			var S = this, U = 0, T, Q = 0, R;
			T = w.grep(N, function(W, V) {
				return O.call(S, W, V)
			});
			for (R = T.length; Q < R; ++Q) {
				if (T[Q] == S) {
					U = Q
				}
				T[Q] = P(T[Q], Q)
			}
			return w.slimbox(T, U, M)
		})
	};
	function z() {
		var N = E.scrollLeft(), M = e ? m.clientWidth : E.width();
		w([ a, G ]).css("left", N + (M / 2));
		if (v) {
			w(H).css({
				left : N,
				top : E.scrollTop(),
				width : M,
				height : E.height()
			})
		}
	}
	function k(M) {
		w("object").add(n ? "select" : "embed").each(function(O, P) {
			if (M) {
				w.data(P, "slimbox", P.style.visibility)
			}
			P.style.visibility = M ? "hidden" : w.data(P, "slimbox")
		});
		var N = M ? "bind" : "unbind";
		E[N]("scroll resize", z);
		w(document)[N]("keydown", p)
	}
	function p(O) {
		var N = O.keyCode, M = w.inArray;
		return (M(N, u.closeKeys) >= 0) ? C() : (M(N, u.nextKeys) >= 0) ? f()
				: (M(N, u.previousKeys) >= 0) ? B() : false
	}
	function B() {
		return b(x)
	}
	function f() {
		return b(D)
	}
	function b(M) {
		if (M >= 0) {
			F = M;
			o = g[F][0];
			x = (F || (u.loop ? g.length : 0)) - 1;
			D = ((F + 1) % g.length) || (u.loop ? 0 : -1);
			r();
			a.className = "lbLoading";
			l = new Image();
			l.onload = j;
			l.src = o
		}
		return false
	}
	function j() {
		a.className = "";
		w(h).css({
			backgroundImage : "url(" + o + ")",
			visibility : "hidden",
			display : ""
		});
		w(q).width(l.width);
		w([ q, I, d ]).height(l.height);
		w(A).html(g[F][1] || "");
		w(K).html(
				(((g.length > 1) && u.counterText) || "").replace(/{x}/, F + 1)
						.replace(/{y}/, g.length));
		if (x >= 0) {
			t.src = g[x][0]
		}
		if (D >= 0) {
			J.src = g[D][0]
		}
		L = h.offsetWidth;
		s = h.offsetHeight;
		var M = Math.max(0, y - (s / 2));
		if (a.offsetHeight != s) {
			w(a).animate({
				height : s,
				top : M
			}, u.resizeDuration, u.resizeEasing)
		}
		if (a.offsetWidth != L) {
			w(a).animate({
				width : L,
				marginLeft : -L / 2
			}, u.resizeDuration, u.resizeEasing)
		}
		w(a).queue(function() {
			w(G).css({
				width : L,
				top : M + s,
				marginLeft : -L / 2,
				visibility : "hidden",
				display : ""
			});
			w(h).css({
				display : "none",
				visibility : "",
				opacity : ""
			}).fadeIn(u.imageFadeDuration, i)
		})
	}
	function i() {
		if (x >= 0) {
			w(I).show()
		}
		if (D >= 0) {
			w(d).show()
		}
		w(c).css("marginTop", -c.offsetHeight).animate({
			marginTop : 0
		}, u.captionAnimationDuration);
		G.style.visibility = ""
	}
	function r() {
		l.onload = null;
		l.src = t.src = J.src = o;
		w([ a, h, c ]).stop(true);
		w([ I, d, h, G ]).hide()
	}
	function C() {
		if (F >= 0) {
			r();
			F = x = D = -1;
			w(a).hide();
			w(H).stop().fadeOut(u.overlayFadeDuration, k)
		}
		return false
	}
})(jQuery);

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i
		.test(navigator.userAgent)) {
	jQuery(function($) {
		$("a[rel^='lightbox']").slimbox(
				{/* Put custom options here */},
				null,
				function(el) {
					return (this == el)
							|| ((this.rel.length > 8) && (this.rel == el.rel));
				});
	});
}